Loading packages

knitr::opts_chunk$set(echo = TRUE)
pacman::p_load(tidyverse, 
               here,
               metafor,
               emmeans,
               orchaRd)

Loading data and functions

dat <- read_csv(here("Data","Full_data.csv"))
# Load custom function to extract data 
source(here("R/functions.R")) 

Data organisation

Getting effect sizes from function, ‘flipping’ effect sizes so that all effect sizes are higher values = individuals do better and learning/memory, and shifting negative values to possitive as lnRR cannot use negative values

#fixing negative values in study 16 (this doesn't work as can't use 0 in lnRR calculation)
#modifying study 16 that has negative values: shifting everything up by the lowest value
#note, this results in inf lnRR - is it because of the zeros?
#dat1 <- dat %>%
 # rowwise() %>%
  #mutate(min.mean = min(CC_mean, EC_mean, CS_mean, ES_mean)) %>%
  #ungroup() %>%
  #mutate(CC_mean = case_when(First_author == "Wang" ~ CC_mean + abs(min.mean),
                            # TRUE ~ as.numeric(.$CC_mean))) %>%
  #mutate(EC_mean = case_when(First_author == "Wang" ~ EC_mean + abs(min.mean), 
                             #TRUE ~ as.numeric(.$EC_mean))) %>%
  #mutate(CS_mean = case_when(First_author == "Wang" ~ CS_mean + abs(min.mean),
                             #TRUE ~ as.numeric(.$CS_mean))) %>%
  #mutate(ES_mean = case_when(First_author == "Wang" ~ ES_mean + abs(min.mean),
                             #TRUE ~ as.numeric(.$ES_mean)))


#Getting effect sizes
effect_size <- effect_set(CC_n = "CC_n", CC_mean = "CC_mean", CC_SD = "CC_SD",
                          EC_n = "EC_n", EC_mean = "EC_mean" , EC_SD ="EC_SD",
                          CS_n = "CS_n", CS_mean = "CS_mean", CS_SD = "CS_SD",
                          ES_n = "ES_n", ES_mean = "ES_mean", ES_SD = "ES_SD",
                          data = dat)

#Removing missing effect sizes
full_info <- which(complete.cases(effect_size) == TRUE) 
dat_effect <- cbind(dat, effect_size)
dat <- dat_effect[full_info, ]

#Flipping 'lower is better' effect sizes
#flipping lnRR for values where higher = worse
dat$lnRR_Ea <- ifelse(dat$Response_direction == 2, dat$lnRR_E*-1,ifelse(is.na(dat$Response_direction) == TRUE, NA, dat$lnRR_E)) # currently NAswhich causes error
dat$lnRR_Sa  <- ifelse(dat$Response_direction == 2, dat$lnRR_S*-1,ifelse(is.na(dat$Response_direction) == TRUE, NA, dat$lnRR_S)) # currently NAswhich causes error
dat$lnRR_ESa <-  ifelse(dat$Response_direction == 2, dat$lnRR_ES*-1,ifelse(is.na(dat$Response_direction) == TRUE, NA, dat$lnRR_ES)) # currently NAswhich causes error

#flipping SMD
dat$SMD_Ea <- ifelse(dat$Response_direction == 2, dat$SMD_E*-1,ifelse(is.na(dat$Response_direction) == TRUE, NA, dat$SMD_E)) # currently NAswhich causes error
dat$SMD_Sa  <- ifelse(dat$Response_direction == 2, dat$SMD_S*-1,ifelse(is.na(dat$Response_direction) == TRUE, NA, dat$SMD_S)) # currently NAswhich causes error
dat$SMD_ESa <-  ifelse(dat$Response_direction == 2, dat$SMD_ES*-1,ifelse(is.na(dat$Response_direction) == TRUE, NA, dat$SMD_ES))

Assigning human readable words to moderators

dat <- dat %>% mutate(Type_learning = case_when(Type_learning == 1 ~ "Habituation",
                                                Type_learning == 2 ~ "Conditioning",
                                                Type_learning == 3 ~ "Recognition", 
                                                Type_learning == 4 ~ "Unclear"),
                      Learning_vs_memory = case_when(Learning_vs_memory == 1 ~ "Learning",
                                                     Learning_vs_memory == 2 ~ "Memory", 
                                                     Learning_vs_memory == 1 ~ "Unclear"),
                      Appetitive_vs_aversive = case_when(Appetitive_vs_aversive == 1 ~"Appetitive",
                                                         Appetitive_vs_aversive == 2 ~ "Aversive",
                                                         Appetitive_vs_aversive == 3 ~ "Not applicable",
                                                         Appetitive_vs_aversive == 4 ~ "Unclear"),
                      Type_stress_exposure = case_when(Type_stress_exposure == 1 ~ "Density",
                                                       Type_stress_exposure == 2 ~ "Scent",
                                                       Type_stress_exposure == 3 ~ "Shock",
                                                       Type_stress_exposure == 4 ~ "Exertion",
                                                       Type_stress_exposure == 5 ~ "Restraint",
                                                       Type_stress_exposure == 6 ~ "MS",
                                                       Type_stress_exposure == 7 ~ "Circadian rhythm",
                                                       Type_stress_exposure == 8 ~ "Noise",
                                                       Type_stress_exposure == 9 ~ "Other",
                                                       Type_stress_exposure == 10 ~ "Combination",
                                                       Type_stress_exposure == 11 ~ "unclear"), 
                      Age_stress_exposure = case_when(Age_stress_exposure == 1 ~ "Prenatal",
                                                      Age_stress_exposure == 2 ~ "Juvenile",
                                                      Age_stress_exposure == 3 ~ "Adult",
                                                      Age_stress_exposure == 4 ~ "Unclear"),
                      Stress_duration = case_when(Stress_duration == 1 ~ "Acute",
                                                  Stress_duration == 2 ~ "Chronic",
                                                  Stress_duration == 3 ~ "Intermittent",
                                                  Stress_duration == 4 ~ "Unclear"),
                      EE_social = case_when(EE_social == 1 ~ "Social",
                                            EE_social== 2 ~ "Non-social", 
                                            EE_social == 3 ~ "Unclear"), 
                      EE_exercise = case_when(EE_exercise == 1 ~ "Exercise", 
                                              EE_exercise == 2 ~ "No exercise"),
                      Age_EE_exposure = case_when(Age_EE_exposure == 1 ~ "Prenatal", 
                                                  Age_EE_exposure == 2 ~ "Juvenile",
                                                  Age_EE_exposure == 3 ~ "Adult", 
                                                  Age_EE_exposure == 4 ~ "Unclear"))

Modelling with lnRR

Things that remain to be done: - Incorporate strain as random effect - Consider including VCV - Check outlier

Stress

Intercept model

Learning and memory are significantly reduced due to stress. High heterogeneity

mod_S0 <- rma.mv(yi = lnRR_Sa, V = lnRRV_S, random = list(~1|Study_ID,
                                                          ~1|ES_ID),
                 test = "t", 
                 data = dat)

summary(mod_S0) 
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
##  -7.9957   15.9913   21.9913   29.5239   22.2672   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0182  0.1350     30     no  Study_ID 
## sigma^2.2  0.0254  0.1592     92     no     ES_ID 
## 
## Test for Heterogeneity:
## Q(df = 91) = 710.8944, p-val < .0001
## 
## Model Results:
## 
## estimate      se     tval  df    pval    ci.lb    ci.ub 
##  -0.0905  0.0341  -2.6531  91  0.0094  -0.1582  -0.0227  ** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
i2_ml(mod_S0) 
##    I2_total I2_Study_ID    I2_ES_ID 
##   0.9282014   0.3882766   0.5399248
funnel(mod_S0)

orchard_plot(mod_S0, mod = "Int", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Meta-regression

Type of learning

The type of learning/memory response

dat$Type_learning<-as.factor(dat$Type_learning)

mod_S1 <- rma.mv(yi = lnRR_Sa, V = lnRRV_S, mod = ~Type_learning-1, random =   list(~1|Study_ID,
                                                                                    ~1|ES_ID),
                 test = "t",
                 data = dat)

summary(mod_S1)
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
##   1.4516   -2.9033    9.0967   23.9608   10.1338   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0294  0.1715     30     no  Study_ID 
## sigma^2.2  0.0072  0.0847     92     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 88) = 561.5739, p-val < .0001
## 
## Test of Moderators (coefficients 1:4):
## F(df1 = 4, df2 = 88) = 12.3231, p-val < .0001
## 
## Model Results:
## 
##                            estimate      se     tval  df    pval    ci.lb 
## Type_learningConditioning   -0.1021  0.0384  -2.6609  88  0.0093  -0.1783 
## Type_learningHabituation    -0.2833  0.0750  -3.7770  88  0.0003  -0.4323 
## Type_learningRecognition    -0.0059  0.0522  -0.1137  88  0.9098  -0.1097 
## Type_learningUnclear         0.5023  0.1210   4.1496  88  <.0001   0.2617 
##                              ci.ub 
## Type_learningConditioning  -0.0258   ** 
## Type_learningHabituation   -0.1342  *** 
## Type_learningRecognition    0.0978      
## Type_learningUnclear        0.7428  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_S1) 
##   R2_marginal R2_coditional 
##     0.1777244     0.8386421
# Orchard plot 
orchard_plot(mod_S1, mod = "Type_learning", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Learning vs Memory

Is the assay broadly measuring learning or memory?

mod_S2 <-  rma.mv(yi = lnRR_Sa, V = lnRRV_S, mod = ~Learning_vs_memory-1, random = list(~1|Study_ID,                                                                               ~1|ES_ID),
                  test = "t",
                  data = dat)

summary(mod_S2) 
## 
## Multivariate Meta-Analysis Model (k = 85; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
##  -6.2296   12.4591   20.4591   30.1345   20.9720   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0294  0.1715     30     no  Study_ID 
## sigma^2.2  0.0142  0.1192     85     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 83) = 620.2415, p-val < .0001
## 
## Test of Moderators (coefficients 1:2):
## F(df1 = 2, df2 = 83) = 2.9245, p-val = 0.0592
## 
## Model Results:
## 
##                             estimate      se     tval  df    pval    ci.lb 
## Learning_vs_memoryLearning   -0.0305  0.0484  -0.6304  83  0.5302  -0.1269 
## Learning_vs_memoryMemory     -0.0918  0.0399  -2.3027  83  0.0238  -0.1712 
##                               ci.ub 
## Learning_vs_memoryLearning   0.0658    
## Learning_vs_memoryMemory    -0.0125  * 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_S2) 
##   R2_marginal R2_coditional 
##     0.0188891     0.6804689
# Orchard plot 
orchard_plot(mod_S2, mod = "Learning_vs_memory", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Appetitive vs aversive

The type of cue used

mod_S3 <- rma.mv(yi = lnRR_Sa, V = lnRRV_S, mod = ~ Appetitive_vs_aversive-1, random = list(~1|Study_ID,                                                                              ~1|ES_ID),
                 test = "t",
                 data = dat)

summary(mod_S3)
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
##  -1.5385    3.0770   15.0770   29.9410   16.1140   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0235  0.1533     30     no  Study_ID 
## sigma^2.2  0.0126  0.1124     92     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 88) = 495.4829, p-val < .0001
## 
## Test of Moderators (coefficients 1:4):
## F(df1 = 4, df2 = 88) = 7.2763, p-val < .0001
## 
## Model Results:
## 
##                                       estimate      se     tval  df    pval 
## Appetitive_vs_aversiveAppetitive       -0.1883  0.0778  -2.4200  88  0.0176 
## Appetitive_vs_aversiveAversive         -0.0980  0.0414  -2.3685  88  0.0201 
## Appetitive_vs_aversiveNot applicable   -0.0357  0.0488  -0.7325  88  0.4658 
## Appetitive_vs_aversiveUnclear           0.5427  0.1435   3.7809  88  0.0003 
##                                         ci.lb    ci.ub 
## Appetitive_vs_aversiveAppetitive      -0.3429  -0.0337    * 
## Appetitive_vs_aversiveAversive        -0.1802  -0.0158    * 
## Appetitive_vs_aversiveNot applicable  -0.1326   0.0612      
## Appetitive_vs_aversiveUnclear          0.2574   0.8279  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_S3) 
##   R2_marginal R2_coditional 
##     0.1630982     0.7076434
# Orchard plot 
orchard_plot(mod_S3, mod = "Appetitive_vs_aversive", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Type of stress

The type of stress manipulation

mod_S4 <- rma.mv(yi = lnRR_Sa, V = lnRRV_S, mod = ~Type_stress_exposure-1, random = list(~1|Study_ID,
                                                                                         ~1|ES_ID),
                 test = "t",
                 data = dat)
summary(mod_S4) 
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
##  -7.6635   15.3270   33.3270   55.3109   35.7270   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0199  0.1410     30     no  Study_ID 
## sigma^2.2  0.0265  0.1627     92     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 85) = 592.3192, p-val < .0001
## 
## Test of Moderators (coefficients 1:7):
## F(df1 = 7, df2 = 85) = 1.5074, p-val = 0.1757
## 
## Model Results:
## 
##                                  estimate      se     tval  df    pval    ci.lb 
## Type_stress_exposureCombination   -0.0688  0.0943  -0.7300  85  0.4674  -0.2562 
## Type_stress_exposureDensity        0.1633  0.2685   0.6084  85  0.5446  -0.3705 
## Type_stress_exposureMS            -0.0516  0.0544  -0.9484  85  0.3456  -0.1597 
## Type_stress_exposureNoise         -0.0674  0.0992  -0.6789  85  0.4990  -0.2647 
## Type_stress_exposureOther         -0.1817  0.2552  -0.7121  85  0.4784  -0.6892 
## Type_stress_exposureRestraint     -0.2017  0.0734  -2.7488  85  0.0073  -0.3475 
## Type_stress_exposureShock         -0.0746  0.1570  -0.4754  85  0.6357  -0.3868 
##                                    ci.ub 
## Type_stress_exposureCombination   0.1186     
## Type_stress_exposureDensity       0.6972     
## Type_stress_exposureMS            0.0565     
## Type_stress_exposureNoise         0.1299     
## Type_stress_exposureOther         0.3257     
## Type_stress_exposureRestraint    -0.0558  ** 
## Type_stress_exposureShock         0.2375     
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_S4)
##   R2_marginal R2_coditional 
##    0.08052616    0.47495458
# Orchard plot 
orchard_plot(mod_S4, mod = "Type_stress_exposure", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Age of stress

The age at which the individuals were exposed to the stressor. Note there are a lot of ‘unkown’ age as authors only report PND which needs to be researched. I’m wondering if this also needs an ‘adolescence’ category as this seesm to be popular in rodent research

mod_S5 <-rma.mv(yi = lnRR_Sa, V = lnRRV_S, mod = ~Age_stress_exposure-1, random = list(~1|Study_ID,
                                                                                       ~1|ES_ID),
                test = "t",
                data = dat)
summary(mod_S5) 
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
##  -6.7020   13.4041   25.4041   40.2681   26.4411   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0152  0.1235     30     no  Study_ID 
## sigma^2.2  0.0263  0.1621     92     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 88) = 573.2107, p-val < .0001
## 
## Test of Moderators (coefficients 1:4):
## F(df1 = 4, df2 = 88) = 3.1056, p-val = 0.0193
## 
## Model Results:
## 
##                              estimate      se     tval  df    pval    ci.lb 
## Age_stress_exposureAdult      -0.1557  0.0805  -1.9332  88  0.0564  -0.3158 
## Age_stress_exposureJuvenile   -0.0293  0.0436  -0.6722  88  0.5032  -0.1159 
## Age_stress_exposurePrenatal   -0.1679  0.0911  -1.8425  88  0.0688  -0.3490 
## Age_stress_exposureUnclear    -0.1888  0.0858  -2.1996  88  0.0305  -0.3593 
##                                ci.ub 
## Age_stress_exposureAdult      0.0044  . 
## Age_stress_exposureJuvenile   0.0573    
## Age_stress_exposurePrenatal   0.0132  . 
## Age_stress_exposureUnclear   -0.0182  * 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_S5) 
##   R2_marginal R2_coditional 
##     0.1010016     0.4310582
# Orchard plot 
orchard_plot(mod_S5, mod = "Age_stress_exposure", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Acute vs chronic stress

How long was the stress applied for (chronic = every day for 7 days or more)? This has the highest marginal R2

mod_S6 <-rma.mv(yi = lnRR_Sa, V = lnRRV_S, mod = ~Stress_duration-1, random = list(~1|Study_ID,
                                                                                   ~1|ES_ID),
                test = "t",
                data = dat)
summary(mod_S6) 
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
##  -6.2217   12.4434   24.4434   39.3074   25.4804   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0154  0.1239     30     no  Study_ID 
## sigma^2.2  0.0259  0.1609     92     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 88) = 676.5571, p-val < .0001
## 
## Test of Moderators (coefficients 1:4):
## F(df1 = 4, df2 = 88) = 3.4245, p-val = 0.0119
## 
## Model Results:
## 
##                              estimate      se     tval  df    pval    ci.lb 
## Stress_durationAcute           0.0674  0.0759   0.8881  88  0.3769  -0.0835 
## Stress_durationChronic        -0.1242  0.0383  -3.2470  88  0.0017  -0.2003 
## Stress_durationIntermittent   -0.2406  0.1653  -1.4550  88  0.1492  -0.5692 
## Stress_durationUnclear        -0.0742  0.1486  -0.4995  88  0.6187  -0.3696 
##                                ci.ub 
## Stress_durationAcute          0.2184     
## Stress_durationChronic       -0.0482  ** 
## Stress_durationIntermittent   0.0880     
## Stress_durationUnclear        0.2211     
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_S6) 
##   R2_marginal R2_coditional 
##     0.1415118     0.4612428
# Orchard plot 
orchard_plot(mod_S6, mod = "Stress_duration", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Environmental enrichment

Intercept model

Learning and memory are significantly improved when housed with environmnetal enrichment

mod_E0 <- rma.mv(yi = lnRR_Ea, V = lnRRV_E, random = list(~1|Study_ID,
                                                          ~1|ES_ID),
                 test = "t",
                 data = dat)
summary(mod_E0) 
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
## -11.7779   23.5558   29.5558   37.0883   29.8316   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0109  0.1045     30     no  Study_ID 
## sigma^2.2  0.0348  0.1865     92     no     ES_ID 
## 
## Test for Heterogeneity:
## Q(df = 91) = 852.3549, p-val < .0001
## 
## Model Results:
## 
## estimate      se    tval  df    pval   ci.lb   ci.ub 
##   0.2016  0.0319  6.3148  91  <.0001  0.1382  0.2650  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
i2_ml(mod_E0) 
##    I2_total I2_Study_ID    I2_ES_ID 
##   0.9313106   0.2224231   0.7088875
funnel(mod_E0)

#trying orchard plot

orchard_plot(mod_E0, mod = "Int", xlab = "lnRR", alpha=0.4) +  # Orchard plot 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5)+ # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2)+ # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_colour_manual(values = "darkorange")+ # change colours
  scale_fill_manual(values="darkorange")+ 
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Meta-regression

Type of learning

The type of learning/memory response

mod_E1 <- rma.mv(yi = lnRR_Ea, V = lnRRV_E, mod = ~Type_learning-1, random = list(~1|Study_ID,
                                                                                  ~1|ES_ID),
                 test = "t",
                 data = dat)

summary(mod_E1)
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
##  -9.0089   18.0178   30.0178   44.8818   31.0548   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0202  0.1423     30     no  Study_ID 
## sigma^2.2  0.0262  0.1619     92     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 88) = 797.6615, p-val < .0001
## 
## Test of Moderators (coefficients 1:4):
## F(df1 = 4, df2 = 88) = 10.7294, p-val < .0001
## 
## Model Results:
## 
##                            estimate      se     tval  df    pval    ci.lb 
## Type_learningConditioning    0.2474  0.0392   6.3159  88  <.0001   0.1696 
## Type_learningHabituation     0.1971  0.0945   2.0855  88  0.0399   0.0093 
## Type_learningRecognition     0.0622  0.0639   0.9734  88  0.3330  -0.0648 
## Type_learningUnclear        -0.1895  0.1929  -0.9824  88  0.3286  -0.5729 
##                             ci.ub 
## Type_learningConditioning  0.3253  *** 
## Type_learningHabituation   0.3850    * 
## Type_learningRecognition   0.1891      
## Type_learningUnclear       0.1939      
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_E1) 
##   R2_marginal R2_coditional 
##     0.1178423     0.5021285
# Orchard plot 
orchard_plot(mod_E1, mod = "Type_learning", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Learning vs Memory

Is the assay broadly measuring learning or memory?

mod_E2 <-  rma.mv(yi = lnRR_Ea, V = lnRRV_E, mod = ~Learning_vs_memory-1, random = list(~1|Study_ID,
                                                                                        ~1|ES_ID),
                  test = "t",
                  data = dat)

summary(mod_E2) 
## 
## Multivariate Meta-Analysis Model (k = 85; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
##  -5.9388   11.8775   19.8775   29.5529   20.3904   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0163  0.1278     30     no  Study_ID 
## sigma^2.2  0.0197  0.1403     85     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 83) = 623.3556, p-val < .0001
## 
## Test of Moderators (coefficients 1:2):
## F(df1 = 2, df2 = 83) = 18.5216, p-val < .0001
## 
## Model Results:
## 
##                             estimate      se    tval  df    pval   ci.lb 
## Learning_vs_memoryLearning    0.2033  0.0460  4.4161  83  <.0001  0.1117 
## Learning_vs_memoryMemory      0.1951  0.0354  5.5142  83  <.0001  0.1247 
##                              ci.ub 
## Learning_vs_memoryLearning  0.2949  *** 
## Learning_vs_memoryMemory    0.2654  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_E2) 
##   R2_marginal R2_coditional 
##  0.0004189897  0.4536360943
# Orchard plot 
orchard_plot(mod_E2, mod = "Learning_vs_memory", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Appetitive vs aversive

The type of cue used

mod_E3 <- rma.mv(yi = lnRR_Ea, V = lnRRV_E, mod = ~ Appetitive_vs_aversive-1, random = list(~1|Study_ID,
                                                                                            ~1|ES_ID),
                 test = "t",
                 data = dat)

summary(mod_E3)
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
##  -6.6058   13.2116   25.2116   40.0756   26.2486   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0207  0.1438     30     no  Study_ID 
## sigma^2.2  0.0232  0.1525     92     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 88) = 537.8318, p-val < .0001
## 
## Test of Moderators (coefficients 1:4):
## F(df1 = 4, df2 = 88) = 12.1954, p-val < .0001
## 
## Model Results:
## 
##                                       estimate      se     tval  df    pval 
## Appetitive_vs_aversiveAppetitive        0.2204  0.0794   2.7750  88  0.0067 
## Appetitive_vs_aversiveAversive          0.2695  0.0434   6.2018  88  <.0001 
## Appetitive_vs_aversiveNot applicable    0.0679  0.0536   1.2658  88  0.2089 
## Appetitive_vs_aversiveUnclear          -0.1779  0.1821  -0.9769  88  0.3313 
##                                         ci.lb   ci.ub 
## Appetitive_vs_aversiveAppetitive       0.0626  0.3782   ** 
## Appetitive_vs_aversiveAversive         0.1831  0.3558  *** 
## Appetitive_vs_aversiveNot applicable  -0.0387  0.1745      
## Appetitive_vs_aversiveUnclear         -0.5399  0.1840      
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_E3) 
##   R2_marginal R2_coditional 
##     0.1626053     0.5568014
# Orchard plot 
orchard_plot(mod_E3, mod = "Appetitive_vs_aversive", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Social enrichment

Does EE also include a manipulation of social environment? Note that we excluded any studies that exclusively used social enrichment.s

mod_E4<- rma.mv(yi = lnRR_Ea, V = lnRRV_E, mod = ~EE_social-1, random = list(~1|Study_ID, 
                                                                             ~1|ES_ID),
                test = "t",data = dat)

summary(mod_E4)
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
## -11.0700   22.1399   32.1399   44.5831   32.8628   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0106  0.1031     30     no  Study_ID 
## sigma^2.2  0.0350  0.1872     92     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 89) = 804.9242, p-val < .0001
## 
## Test of Moderators (coefficients 1:3):
## F(df1 = 3, df2 = 89) = 14.3367, p-val < .0001
## 
## Model Results:
## 
##                      estimate      se    tval  df    pval    ci.lb   ci.ub 
## EE_socialNon-social    0.1398  0.0510  2.7402  89  0.0074   0.0384  0.2412   ** 
## EE_socialSocial        0.2350  0.0417  5.6380  89  <.0001   0.1522  0.3178  *** 
## EE_socialUnclear       0.3548  0.1841  1.9271  89  0.0572  -0.0110  0.7207    . 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_E4) 
##   R2_marginal R2_coditional 
##    0.05501789    0.27476664
# Orchard plot 
orchard_plot(mod_E4, mod = "EE_social", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Exercise enrichment

Does the form of enrichment include exercise through a running wheel or treadmill?

mod_E5<- rma.mv(yi = lnRR_Ea, V = lnRRV_E, mod = ~EE_exercise-1, random = list(~1|Study_ID,
                                                                               ~1|ES_ID),
                test = "t",
                data = dat)

summary(mod_E5)
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
## -12.0257   24.0514   32.0514   42.0507   32.5220   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0120  0.1097     30     no  Study_ID 
## sigma^2.2  0.0349  0.1868     92     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 90) = 811.3918, p-val < .0001
## 
## Test of Moderators (coefficients 1:2):
## F(df1 = 2, df2 = 90) = 19.1476, p-val < .0001
## 
## Model Results:
## 
##                         estimate      se    tval  df    pval   ci.lb   ci.ub 
## EE_exerciseExercise       0.2020  0.0401  5.0382  90  <.0001  0.1224  0.2817 
## EE_exerciseNo exercise    0.2011  0.0560  3.5932  90  0.0005  0.0899  0.3123 
##  
## EE_exerciseExercise     *** 
## EE_exerciseNo exercise  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_E5) 
##   R2_marginal R2_coditional 
##  4.268180e-06  2.562894e-01
# Orchard plot 
orchard_plot(mod_E5, mod = "EE_exercise", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Age of enrichment

The age at which the individuals were exposed to environmental enrichment.

mod_E6 <- rma.mv(yi = lnRR_Ea, V = lnRRV_E, mod = ~Age_EE_exposure-1, random = list(~1|Study_ID,
                                                                                    ~1|ES_ID),
                 test = "t",
                 data = dat)

summary(mod_E6) 
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
## -10.0138   20.0276   30.0276   42.4708   30.7505   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0090  0.0951     30     no  Study_ID 
## sigma^2.2  0.0355  0.1884     92     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 89) = 797.4346, p-val < .0001
## 
## Test of Moderators (coefficients 1:3):
## F(df1 = 3, df2 = 89) = 15.7420, p-val < .0001
## 
## Model Results:
## 
##                          estimate      se    tval  df    pval    ci.lb   ci.ub 
## Age_EE_exposureAdult       0.1859  0.0614  3.0259  89  0.0032   0.0638  0.3080 
## Age_EE_exposureJuvenile    0.0033  0.1008  0.0331  89  0.9736  -0.1970  0.2037 
## Age_EE_exposureUnclear     0.2362  0.0383  6.1700  89  <.0001   0.1601  0.3122 
##  
## Age_EE_exposureAdult      ** 
## Age_EE_exposureJuvenile 
## Age_EE_exposureUnclear   *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_E6) 
##   R2_marginal R2_coditional 
##    0.09611387    0.27963158
# Orchard plot 
orchard_plot(mod_E6, mod = "Age_EE_exposure", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Interaction of stress and EE

Intercept

Enriched and stress animals are better at learning and memory. TODO: It looks like there is a large but low precision outlier. Should potentially remove?

mod_ES0 <- rma.mv(yi = lnRR_ESa, V = lnRRV_ES, random = list(~1|Study_ID,
                                                             ~1|ES_ID),
                  test = "t", 
                  data = dat)

summary(mod_ES0) 
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
## -43.9321   87.8643   93.8643  101.3968   94.1401   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0525  0.2292     30     no  Study_ID 
## sigma^2.2  0.0162  0.1274     92     no     ES_ID 
## 
## Test for Heterogeneity:
## Q(df = 91) = 314.3092, p-val < .0001
## 
## Model Results:
## 
## estimate      se    tval  df    pval   ci.lb   ci.ub 
##   0.1494  0.0515  2.8997  91  0.0047  0.0470  0.2517  ** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
i2_ml(mod_ES0) 
##    I2_total I2_Study_ID    I2_ES_ID 
##   0.8360427   0.6387796   0.1972631
funnel(mod_ES0)

orchard_plot(mod_ES0, mod = "Int", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Meta-regression

Type of learning

The type of learning/memory response

mod_ES1 <- rma.mv(yi = lnRR_ESa, V = lnRRV_E, mod = ~Type_learning-1, random = list(~1|Study_ID,
                                                                                    ~1|ES_ID),
                  test = "t",
                  data = dat)

summary(mod_ES1)
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
## -62.8990  125.7980  137.7980  152.6620  138.8350   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0873  0.2955     30     no  Study_ID 
## sigma^2.2  0.0912  0.3021     92     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 88) = 1253.0271, p-val < .0001
## 
## Test of Moderators (coefficients 1:4):
## F(df1 = 4, df2 = 88) = 3.3740, p-val = 0.0129
## 
## Model Results:
## 
##                            estimate      se     tval  df    pval    ci.lb 
## Type_learningConditioning    0.2424  0.0723   3.3549  88  0.0012   0.0988 
## Type_learningHabituation     0.2281  0.1662   1.3724  88  0.1734  -0.1022 
## Type_learningRecognition    -0.0450  0.1158  -0.3890  88  0.6982  -0.2752 
## Type_learningUnclear         0.0003  0.3577   0.0009  88  0.9993  -0.7106 
##                             ci.ub 
## Type_learningConditioning  0.3861  ** 
## Type_learningHabituation   0.5583     
## Type_learningRecognition   0.1851     
## Type_learningUnclear       0.7113     
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_ES1) 
##   R2_marginal R2_coditional 
##    0.05851901    0.51888047
# Orchard plot 
orchard_plot(mod_ES1, mod = "Type_learning", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Learning vs Memory

Is the assay broadly measuring learning or memory?

mod_ES2 <-  rma.mv(yi = lnRR_ESa, V = lnRRV_ES, mod = ~Learning_vs_memory-1, random = list(~1|Study_ID, 
                                                                                           ~1|ES_ID),
                   test = "t",
                   data = dat)

summary(mod_ES2) 
## 
## Multivariate Meta-Analysis Model (k = 85; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
## -45.5256   91.0513   99.0513  108.7266   99.5641   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0518  0.2277     30     no  Study_ID 
## sigma^2.2  0.0192  0.1386     85     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 83) = 306.7981, p-val < .0001
## 
## Test of Moderators (coefficients 1:2):
## F(df1 = 2, df2 = 83) = 4.8150, p-val = 0.0105
## 
## Model Results:
## 
##                             estimate      se    tval  df    pval   ci.lb 
## Learning_vs_memoryLearning    0.2064  0.0691  2.9855  83  0.0037  0.0689 
## Learning_vs_memoryMemory      0.1266  0.0553  2.2887  83  0.0246  0.0166 
##                              ci.ub 
## Learning_vs_memoryLearning  0.3439  ** 
## Learning_vs_memoryMemory    0.2366   * 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_ES2) 
##   R2_marginal R2_coditional 
##     0.0196254     0.7348983
# Orchard plot 
orchard_plot(mod_ES2, mod = "Learning_vs_memory", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Appetitive vs aversive

The type of cue used

mod_ES3 <- rma.mv(yi = lnRR_ESa, V = lnRRV_ES, mod = ~ Appetitive_vs_aversive-1, random = list(~1|Study_ID,
                                                                                               ~1|ES_ID),
                  test = "t",
                  data = dat)

summary(mod_ES3)
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
## -40.4312   80.8624   92.8624  107.7264   93.8994   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0516  0.2272     30     no  Study_ID 
## sigma^2.2  0.0100  0.0999     92     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 88) = 276.6164, p-val < .0001
## 
## Test of Moderators (coefficients 1:4):
## F(df1 = 4, df2 = 88) = 4.6425, p-val = 0.0019
## 
## Model Results:
## 
##                                       estimate      se     tval  df    pval 
## Appetitive_vs_aversiveAppetitive        0.2225  0.1173   1.8973  88  0.0611 
## Appetitive_vs_aversiveAversive          0.2102  0.0607   3.4619  88  0.0008 
## Appetitive_vs_aversiveNot applicable    0.0052  0.0692   0.0750  88  0.9404 
## Appetitive_vs_aversiveUnclear          -0.0009  0.1621  -0.0054  88  0.9957 
##                                         ci.lb   ci.ub 
## Appetitive_vs_aversiveAppetitive      -0.0106  0.4556    . 
## Appetitive_vs_aversiveAversive         0.0895  0.3308  *** 
## Appetitive_vs_aversiveNot applicable  -0.1323  0.1426      
## Appetitive_vs_aversiveUnclear         -0.3229  0.3212      
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_ES3) 
##   R2_marginal R2_coditional 
##     0.1183089     0.8572186
# Orchard plot 
orchard_plot(mod_ES3, mod = "Appetitive_vs_aversive", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Type of stress

The type of stress manipulation

mod_ES4 <- rma.mv(yi = lnRR_ESa, V = lnRRV_ES, mod = ~Type_stress_exposure-1, random = list(~1|Study_ID,
                                                                                            ~1|ES_ID),
                  test = "t",
                  data = dat)
summary(mod_ES4)
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
## -40.6944   81.3887   99.3887  121.3726  101.7887   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0657  0.2564     30     no  Study_ID 
## sigma^2.2  0.0167  0.1291     92     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 85) = 279.7273, p-val < .0001
## 
## Test of Moderators (coefficients 1:7):
## F(df1 = 7, df2 = 85) = 1.6555, p-val = 0.1311
## 
## Model Results:
## 
##                                  estimate      se     tval  df    pval    ci.lb 
## Type_stress_exposureCombination    0.0768  0.1474   0.5212  85  0.6036  -0.2162 
## Type_stress_exposureDensity       -0.5500  0.4305  -1.2777  85  0.2048  -1.4059 
## Type_stress_exposureMS             0.1669  0.0879   1.9000  85  0.0608  -0.0078 
## Type_stress_exposureNoise          0.1804  0.1638   1.1016  85  0.2738  -0.1452 
## Type_stress_exposureOther          0.6707  0.4141   1.6196  85  0.1090  -0.1527 
## Type_stress_exposureRestraint      0.1535  0.1163   1.3199  85  0.1904  -0.0777 
## Type_stress_exposureShock          0.1527  0.2169   0.7041  85  0.4833  -0.2785 
##                                   ci.ub 
## Type_stress_exposureCombination  0.3699    
## Type_stress_exposureDensity      0.3059    
## Type_stress_exposureMS           0.3416  . 
## Type_stress_exposureNoise        0.5061    
## Type_stress_exposureOther        1.4942    
## Type_stress_exposureRestraint    0.3848    
## Type_stress_exposureShock        0.5838    
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_ES4)
##   R2_marginal R2_coditional 
##     0.1283499     0.8237461
# Orchard plot 
orchard_plot(mod_ES4, mod = "Type_stress_exposure", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Age of stress

The age at which the individuals were exposed to the stressor. Note there are a lot of ‘unkown’ age as authors only report PND which needs to be researched. I’m wondering if this also needs an ‘adolescence’ category as this seesm to be popular in rodent research

mod_ES5 <-rma.mv(yi = lnRR_ESa, V = lnRRV_ES, mod = ~Age_stress_exposure-1, random = list(~1|Study_ID,
                                                                                          ~1|ES_ID),
                 test = "t",
                 data = dat)
summary(mod_ES5) 
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
## -41.1116   82.2231   94.2231  109.0872   95.2602   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0470  0.2167     30     no  Study_ID 
## sigma^2.2  0.0154  0.1243     92     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 88) = 258.1063, p-val < .0001
## 
## Test of Moderators (coefficients 1:4):
## F(df1 = 4, df2 = 88) = 3.6152, p-val = 0.0089
## 
## Model Results:
## 
##                              estimate      se    tval  df    pval    ci.lb 
## Age_stress_exposureAdult       0.0523  0.1160  0.4508  88  0.6532  -0.1782 
## Age_stress_exposureJuvenile    0.0920  0.0669  1.3762  88  0.1722  -0.0409 
## Age_stress_exposurePrenatal    0.3768  0.1385  2.7217  88  0.0078   0.1017 
## Age_stress_exposureUnclear     0.2876  0.1292  2.2262  88  0.0286   0.0309 
##                               ci.ub 
## Age_stress_exposureAdult     0.2827     
## Age_stress_exposureJuvenile  0.2249     
## Age_stress_exposurePrenatal  0.6520  ** 
## Age_stress_exposureUnclear   0.5443   * 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_ES5) 
##   R2_marginal R2_coditional 
##     0.1526494     0.7902692
# Orchard plot 
orchard_plot(mod_ES5, mod = "Age_stress_exposure", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Acute vs chronic stress

How long was the stress applied for (chronic = every day for 7 days or more)? This has the highest marginal R2 (currentl nearly 43%) - need to redo without outlier

mod_ES6 <-rma.mv(yi = lnRR_ESa, V = lnRRV_ES, mod = ~Stress_duration-1, random = list(~1|Study_ID,
                                                                                      ~1|ES_ID),
                 test = "t",
                 data = dat)
summary(mod_ES6) 
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
## -37.7221   75.4441   87.4441  102.3081   88.4812   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0319  0.1787     30     no  Study_ID 
## sigma^2.2  0.0172  0.1310     92     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 88) = 278.3176, p-val < .0001
## 
## Test of Moderators (coefficients 1:4):
## F(df1 = 4, df2 = 88) = 6.6034, p-val = 0.0001
## 
## Model Results:
## 
##                              estimate      se     tval  df    pval    ci.lb 
## Stress_durationAcute          -0.1490  0.1053  -1.4144  88  0.1608  -0.3583 
## Stress_durationChronic         0.1967  0.0514   3.8297  88  0.0002   0.0946 
## Stress_durationIntermittent    0.6636  0.2209   3.0042  88  0.0035   0.2246 
## Stress_durationUnclear         0.1479  0.1741   0.8492  88  0.3980  -0.1982 
##                               ci.ub 
## Stress_durationAcute         0.0603      
## Stress_durationChronic       0.2987  *** 
## Stress_durationIntermittent  1.1025   ** 
## Stress_durationUnclear       0.4940      
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_ES6) 
##   R2_marginal R2_coditional 
##     0.3702872     0.7799714
# Orchard plot 
orchard_plot(mod_ES6, mod = "Stress_duration", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Social enrichment

Does EE also include a manipulation of social environment (i.e., number of individuals in EE relative to control)?

mod_ES7<- rma.mv(yi = lnRR_ESa, V = lnRRV_ES, mod = ~EE_social-1, random = list(~1|Study_ID,
                                                                                ~1|ES_ID),
                 test = "t",
                 data = dat)

summary(mod_ES7)
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
## -42.6997   85.3994   95.3994  107.8426   96.1223   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0521  0.2282     30     no  Study_ID 
## sigma^2.2  0.0166  0.1289     92     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 89) = 309.9047, p-val < .0001
## 
## Test of Moderators (coefficients 1:3):
## F(df1 = 3, df2 = 89) = 3.4909, p-val = 0.0189
## 
## Model Results:
## 
##                      estimate      se     tval  df    pval    ci.lb   ci.ub 
## EE_socialNon-social    0.1171  0.0798   1.4663  89  0.1461  -0.0416  0.2757     
## EE_socialSocial        0.1937  0.0691   2.8039  89  0.0062   0.0564  0.3310  ** 
## EE_socialUnclear      -0.1958  0.2883  -0.6789  89  0.4990  -0.7687  0.3772     
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_ES7) 
##   R2_marginal R2_coditional 
##     0.0571462     0.7718836
# Orchard plot 
orchard_plot(mod_ES7, mod = "EE_social", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Exercise enrichment

Does the form of enrichment include exercise through a running wheel or treadmill?

mod_ES8<- rma.mv(yi = lnRR_ESa, V = lnRRV_ES, mod = ~EE_exercise-1, random = list(~1|Study_ID, 
    ~1|ES_ID),
     test = "t",
     data = dat)

summary(mod_ES8)
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
## -43.5328   87.0656   95.0656  105.0649   95.5362   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0528  0.2299     30     no  Study_ID 
## sigma^2.2  0.0165  0.1283     92     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 90) = 277.3317, p-val < .0001
## 
## Test of Moderators (coefficients 1:2):
## F(df1 = 2, df2 = 90) = 4.3500, p-val = 0.0157
## 
## Model Results:
## 
##                         estimate      se    tval  df    pval   ci.lb   ci.ub 
## EE_exerciseExercise       0.1290  0.0628  2.0549  90  0.0428  0.0043  0.2536  * 
## EE_exerciseNo exercise    0.1924  0.0909  2.1159  90  0.0371  0.0118  0.3730  * 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_ES8) 
##   R2_marginal R2_coditional 
##    0.01312899    0.76550033
# Orchard plot 
orchard_plot(mod_ES8, mod = "EE_exercise", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13)) 

Age of enrichment

The age at which the individuals were exposed to environmental enrichment.

mod_ES9 <- rma.mv(yi = lnRR_ESa, V = lnRRV_ES, mod = ~Age_EE_exposure-1, random = list(~1|Study_ID,
                                                                                       ~1|ES_ID),
                  test = "t",
                  data = dat)

summary(mod_ES9) 
## 
## Multivariate Meta-Analysis Model (k = 92; method: REML)
## 
##   logLik  Deviance       AIC       BIC      AICc 
## -42.9629   85.9259   95.9259  108.3691   96.6488   
## 
## Variance Components:
## 
##             estim    sqrt  nlvls  fixed    factor 
## sigma^2.1  0.0547  0.2340     30     no  Study_ID 
## sigma^2.2  0.0170  0.1305     92     no     ES_ID 
## 
## Test for Residual Heterogeneity:
## QE(df = 89) = 299.7681, p-val < .0001
## 
## Test of Moderators (coefficients 1:3):
## F(df1 = 3, df2 = 89) = 3.0451, p-val = 0.0329
## 
## Model Results:
## 
##                          estimate      se     tval  df    pval    ci.lb   ci.ub 
## Age_EE_exposureAdult       0.1576  0.1030   1.5299  89  0.1296  -0.0471  0.3623 
## Age_EE_exposureJuvenile   -0.0146  0.1733  -0.0840  89  0.9332  -0.3589  0.3298 
## Age_EE_exposureUnclear     0.1693  0.0650   2.6053  89  0.0108   0.0402  0.2985 
##  
## Age_EE_exposureAdult 
## Age_EE_exposureJuvenile 
## Age_EE_exposureUnclear   * 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
r2_ml(mod_ES9) 
##   R2_marginal R2_coditional 
##    0.03931516    0.77207337
# Orchard plot 
orchard_plot(mod_ES9, mod = "Age_EE_exposure", xlab = "lnRR", alpha=0.4) + 
  geom_errorbarh(aes(xmin = lowerPR, xmax = upperPR), height = 0, show.legend = FALSE, size = 1.1, alpha = 0.5) + # prediction intervals
  geom_errorbarh(aes(xmin = lowerCL, xmax = upperCL), height = 0.05, show.legend = FALSE, size = 2) + # confidence intervals
  geom_point(aes(fill = name),  size = 5, shape = 21)+ # mean estimate
  scale_size_continuous(range = c(1, 7))+ # change point scaling
  theme(panel.border = element_rect(colour = "black", fill=NA, size=1.3), # border around the plot
        text = element_text(size = 24), # change font sizes
        legend.title = element_text(size = 15),
        legend.text = element_text(size = 13))